package cn.study.zgm.nettyall.channel;


import java.nio.Buffer;
import java.nio.ByteBuffer;

/**
 * packageName cn.study.zgm.nettyall.channel
 *
 * @author 你的名字
 * @version JDK 8
 * @className BufferRead (此处以class为例)
 * @date 2025/2/24
 * @description TODO
 */
public class ByteBufferRead {
    public static void main(String[] args) {
        ByteBuffer buffer = ByteBuffer.allocate(10);
        buffer.put(new byte[]{0x61,0x62,0x63,0x64});
        ByteBufferUtil.debugAll(buffer);
        buffer.flip();

        // rewind 从头开始读
        System.out.println("打印："+buffer.get(new byte[2]).toString());
        ByteBufferUtil.debugAll(buffer);
        buffer.rewind(); // 从零开始进行
        System.out.println("打印："+buffer.get(new byte[2]));
        ByteBufferUtil.debugAll(buffer);
        buffer.rewind();

        System.out.println("-----mark & reset-------------------------");
        //mark & reset
        //mark 做一个标记，记录position位置，reset是将position重置到mark位置
        buffer.get(new byte[2]);
        buffer.mark();
        ByteBufferUtil.debugAll(buffer);
        buffer.get();
        ByteBufferUtil.debugAll(buffer);
        buffer.reset();
        ByteBufferUtil.debugAll(buffer);
        System.out.println("打印读取到的字节："+(char)buffer.get());
        ByteBufferUtil.debugAll(buffer);

        buffer.rewind();
        System.out.println("-----get(i)-------------------------");
        // get(i) 读取指定位置的字节，不会改变索引的位置
        ByteBufferUtil.debugAll(buffer);
        System.out.println("打印读取到的字节："+(char)buffer.get(3));
        ByteBufferUtil.debugAll(buffer);
    }
}
